library(readr)
library(tibble)
dataset <- read_csv("data/Miel.concentraciones.en.microgramos.por.gramo.csv")
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   Li = col_double(),
##   Na = col_double(),
##   Mg = col_double(),
##   Al = col_double(),
##   Ca = col_double(),
##   Ti = col_double(),
##   V = col_double(),
##   Cr = col_double(),
##   Mn = col_double(),
##   Fe = col_double(),
##   Co = col_double(),
##   Ni = col_double(),
##   Cu = col_double(),
##   Zn = col_double(),
##   As = col_double(),
##   Se = col_double(),
##   Rb = col_double(),
##   Sr = col_double(),
##   Mo = col_double(),
##   Pd = col_double()
##   # ... with 7 more columns
## )
## See spec(...) for full column specifications.
# View(dataset) #<-- descomentar para ver dataset en Rstudio

Quitar columnas vacías

vacias <- 29:ncol(dataset)
dataset <- dataset[-vacias]

Cuántas variables y sus nombres

ncol(dataset)
## [1] 28
colnames(dataset)
##  [1] "Zona geográfica" "Li"              "Na"             
##  [4] "Mg"              "Al"              "Ca"             
##  [7] "Ti"              "V"               "Cr"             
## [10] "Mn"              "Fe"              "Co"             
## [13] "Ni"              "Cu"              "Zn"             
## [16] "As"              "Se"              "Rb"             
## [19] "Sr"              "Mo"              "Pd"             
## [22] "Ag"              "Cd"              "Sn"             
## [25] "Sb"              "Hg"              "207 Pb"         
## [28] "208 Pb"

Cuántos ejemplos tenemos de cada zona

table(dataset[1])
## 
##      Noreste          Sur Valle de Uco 
##           42           12          100
dataset$`Zona geográfica` <- as.factor(dataset$`Zona geográfica`)

Vamos a realizar algunas gráficas descriptivas

library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
library(ggplot2)
featurePlot(x=dataset[-1], y=dataset$`Zona geográfica`,  "box")

featurePlot(x=dataset[-1], y=dataset$`Zona geográfica`,  "strip", jitter = TRUE)

featurePlot(x=dataset[,2:6], y=dataset$`Zona geográfica`,  "pairs", auto.key=list(columns=3))

featurePlot(x=dataset[,2:6], y=dataset$`Zona geográfica`,  "ellipse", auto.key=list(columns=3))

# featurePlot(x=dataset[,20:29], y=dataset$`Zona geográfica`,  "pairs", auto.key=list(columns=3))
# featurePlot(x=dataset[,7:14], y=dataset$`Zona geográfica`,  "ellipse", auto.key=list(columns=3))

agregar columna etiqueta label para indicar si es o no de Valle de Uco para futura clasificación binaria

vDeUco <- "Valle de Uco"
add_column(dataset,label=0)
## # A tibble: 154 x 29
##    `Zona geográfic…      Li    Na    Mg    Al    Ca     Ti       V      Cr
##    <fct>              <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>   <dbl>   <dbl>
##  1 Valle de Uco     9.95e-2  5.23 26.5  35.4   23.4 0.0930 5.48e-3 3.15e-2
##  2 Valle de Uco     1.00e-4  1.40 77.4   1.71  59.6 0.0541 6.20e-3 1.00e-4
##  3 Valle de Uco     6.86e-2  1.13 80.8   3.54  43.9 0.0246 1.00e-4 5.17e-2
##  4 Valle de Uco     1.82e-1  2.78 11.6   2.84  22.7 0.112  8.78e-3 1.00e-4
##  5 Valle de Uco     7.98e-2  1.19 10.3   2.26  11.9 0.0674 1.74e-3 2.41e-2
##  6 Valle de Uco     6.10e-2  3.70 46.5   1.83  32.7 0.0367 6.53e-5 4.62e-2
##  7 Valle de Uco     3.29e-2  1.64 65.6   2.16  46.3 0.0912 7.19e-3 6.06e-3
##  8 Valle de Uco     6.03e-2  1.70 39.2   5.40  33.2 0.122  4.55e-3 1.12e-2
##  9 Valle de Uco     1.00e-4  3.93 54.7   2.84  44.2 0.0890 1.08e-2 1.00e-4
## 10 Valle de Uco     2.40e-1  1.14  9.23  3.62  18.7 0.0614 1.44e-3 1.40e-2
## # ... with 144 more rows, and 20 more variables: Mn <dbl>, Fe <dbl>,
## #   Co <dbl>, Ni <dbl>, Cu <dbl>, Zn <dbl>, As <dbl>, Se <dbl>, Rb <dbl>,
## #   Sr <dbl>, Mo <dbl>, Pd <dbl>, Ag <dbl>, Cd <dbl>, Sn <dbl>, Sb <dbl>,
## #   Hg <dbl>, `207 Pb` <dbl>, `208 Pb` <dbl>, label <dbl>
dataset[dataset$`Zona geográfica` == vDeUco,"label"] <- 1
dataset[dataset$`Zona geográfica` != vDeUco,"label"] <- -1
featurePlot(x=dataset[-1], y=as.factor(dataset$label),  "box")

#featurePlot(x=dataset[-1], y=as.factor(dataset$label),  "strip", jitter = TRUE)
featurePlot(x=dataset[,2:5], y=as.factor(dataset$label),  "pairs", auto.key=list(columns=2))

Correlaciones (lineales) entre las variables

library(corrplot)
## corrplot 0.84 loaded
M <- cor(dataset[-1])
corrplot(M, method = "ellipse")

corrplot(M, method = "number")

Vamos a normalizar las variables y luego realizar los feature plots, que parecieran estar afectados por outliers

quitar <- c(1,ncol(dataset))
data <-  dataset[-quitar]
media <- apply(data, 2, mean)
std <- apply(data, 2, sd)
data <- scale(data, center = media, scale = std)
data <- as.data.frame(cbind(data,label=dataset$label))

feature selection para estimar variables más importantes (variable importance? feature selectior package?)

featurePlot(x=data, y=as.factor(dataset$label),  "box")

featurePlot(x=data, y=as.factor(dataset$label),  "strip", jitter = TRUE)

TODO como mejorar el plot porque son muchas variables

featurePlot(x=data[,c(1,2,3,4)], y=as.factor(dataset$label),  "pairs", auto.key=list(columns=2))

featurePlot(x=data[-ncol(data)], y=as.factor(dataset$label),  "pairs", auto.key=list(columns=2))

Li y Na parecieran ser variables candidatas de mayor peso en el modelo clasificador. TODO task: no prioritario, pero habría que ver opciones en la librería o programar algo para visualizar varias variables a la vez.